﻿using System;
using System.Xml;
using System.Text;
using System.Collections;
using System.ComponentModel;
using System.Collections.Generic;
using Sinacor.Infra.UI.Common;
using Sinacor.Infra.Common.Exceptions;
using Sinacor.UI.Bovespa.Contabil.Model;
using Sinacor.UI.Bovespa.Contabil.Communication;
using Sinacor.UI.Bovespa.Contabil.Communication.Bovespa.Contabil.ContaContabil;

namespace Sinacor.UI.Bovespa.Contabil.Presenter
{
    /// <summary>
    /// FGualberto.7COMm - Task: 6312
    /// </summary>
    public class PesquisaHistoricosContabeis: BasePresenter<IPesquisaHistoricosContabeis>
    {
        Communication.ContaContabil _communicationContaContabil = null;

        Model.Parameter.FiltroHistoricoContabil _filtroPesquisa;
        Model.HistoricoContabil _historicoContabilSelecionado;
        ModelCollection<Model.HistoricoContabil> _listaHistorico;

        /// <summary>
        /// Propriedade Lista Histórico 
        /// </summary>
        public ModelCollection<Model.HistoricoContabil> ListaHistorico
        {
            get { return _listaHistorico; }
            set { _listaHistorico = value; }
        }

        /// <summary>
        /// Propriedade Filtro de Pesquisa
        /// </summary>
        public Model.Parameter.FiltroHistoricoContabil FiltroPesquisa
        {
            get { return _filtroPesquisa; }
            set { _filtroPesquisa = value; }
        }

        /// <summary>
        /// Propriedade Histórico Contabil Selecionado
        /// </summary>
        public Model.HistoricoContabil HistoricoContabilSelecionado
        {
            get { return _historicoContabilSelecionado; }
            set { _historicoContabilSelecionado = value; }
        }

        #region Construtor

        /// <summary>
        /// Construtor padrão que inicializa View
        /// </summary>
        /// <param name="view">View</param>
        public PesquisaHistoricosContabeis(IPesquisaHistoricosContabeis view)
            : base(view)
        {
            this._communicationContaContabil = new Communication.ContaContabil(this.Session);

            // Inicializando models
            _filtroPesquisa = new Model.Parameter.FiltroHistoricoContabil();
            _historicoContabilSelecionado = new Model.HistoricoContabil();
            _listaHistorico = new ModelCollection<Model.HistoricoContabil>();
        }

        #endregion


        /// <summary>
        /// Inicializar Tela
        /// </summary>
        public void Inicializar()
        {
            ConsultarHistoricosContabeis();
        }

        /// <summary>
        /// Pesquisar Registros
        /// </summary>
        public void Pesquisar()
        {
            ConsultarHistoricosContabeis();
        }

        /// <summary>
        /// Consultar Históricos Contabeis
        /// </summary>
        private void ConsultarHistoricosContabeis()
        {
            try
            {
                _listaHistorico = _communicationContaContabil.ConsultarHistoricosContabeis(FiltroPesquisa);
                View.AtualizarHistoricoContabil();
            }
            catch (Exception ex)
            {
                base.HandleException(ex);
            }
        }
            
    }
}
